package com.spark.modules.generation.service;

import com.spark.common.core.Result;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Map;

/**
 * 代码生成Service
 *
 * @author LYCHEE
 * @date 2025/3/5 12:41
 */
public interface IGenCodeService {

    /**
     * 预览代码
     *
     * @param modelCode 模型编码
     * @return 数据
     */
    List<Map<String, String>> previewCode(String modelCode);

    /**
     * 生成后端代码到项目
     *
     * @param modelCode 模型编码
     * @return 数据
     */
    Result<?> genCodeToProject(String modelCode);

    /**
     * 通过页面ID预览前端代码
     *
     * @param pageId 页面ID
     * @return 代码
     */
    Result<?> previewFrontEndCode(String pageId);

    /**
     * 生成前端代码到项目
     *
     * @param pageId 页面ID
     * @return 数据
     */
    Result<?> genCodeFrontEndToProject(String pageId);

    /**
     * 生成菜单SQL
     *
     * @param pageId 页面ID
     * @return 数据
     */
    Result<?> genSql(String pageId);

    /**
     * 下载后端代码
     *
     * @param response 响应
     * @throws IOException
     */
    void downloadBankCode(String modelCode, HttpServletResponse response) throws IOException;

    /**
     * 下载前端代码
     *
     * @param pageId   页面ID
     * @param response 响应
     * @throws IOException
     */
    void downloadFrontCode(String pageId, HttpServletResponse response) throws IOException;
}
